"""
语法:
    1.selenium语法
        driver.find_element(By.CSS_SELECTOR,"CSS选择器"
    2.CSS选择器
        1.ID选择器:#ID属性值
        2.class选择器: .class属性名
        3.其他属性选择器 标签名[属性名="属性值"]
        4.层级选择器  标签名[属性名="属性值"]>标签名
        5.层级+索引选择器
            标签名[属性名="属性值"]>:nth-child(n) # 当前标签下的第N个子标签,不能指定标签名称
            标签名[属性名="属性值"]>标签名:nth-of-type(n)  当前标签下,第N个指定的子标签
        6.模糊匹配  标签名[属性名*="部分属性"]
        7.多属性选择器   标签名[属性名1="属性值1"][属性名2="属性值2"]
总结:
    1.selenium官方推荐使用CSS_SELECTOR元素定位方式
    2.CSS选择器在HTML文件中,查找元素的效率高

具体选择哪种定位方式:
    1.根据公司要求选择
    2.公司没有要求--->哪种简单用哪个
        - 当标签有固定的ID属性时, 优先使用ID
        - 定位a标签时,优先使用partial_link_text
        - 如果常规定位方式无法完成定位,选择使用xpath或CSS
"""
# 1.导入需要的包
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By

# 2.创建浏览器对象并打开浏览器
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.baidu.com")

# 3.元素定位+元素操作
# id选择器
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("CSS")

# class选择器
driver.find_element(By.CSS_SELECTOR, ".s_ipt").send_keys("CSS")

# 其他属性选择器
driver.find_element(By.CSS_SELECTOR, 'input[naem="wd"]').send_keys("CSS")

# 层级选择器
driver.find_element(By.CSS_SELECTOR, 's_ipt_wr>input').send_keys("CSS")

# 层级+索引
el1 = driver.find_element(By.CSS_SELECTOR, 'form[name="f"]>:nth-child(3)')
print(el1.get_attribute("outerHTML"))

el2 = driver.find_element(By.CSS_SELECTOR, 'form[action="/s"]>input:nth-of-type(8)')
print(el2.get_attribute("outerHTML"))

# 模糊匹配
driver.find_element(By.CSS_SELECTOR, 'input[value*="百"]').click()

# 多属性选择器
driver.find_element(By.CSS_SELECTOR, 'input[value="百"][type*="s"]').click()

# 关闭浏览器
sleep(5)
driver.quit()